package cn.thinkluck.pattern.state.mario.state;

import lombok.extern.slf4j.Slf4j;

/**
 * 小马里奥的状态
 *
 * @Author liutao
 * @DateTime 2024/8/3 下午5:19
 */
@Slf4j
public class MarioSmallStateImpl implements MarioState {
    // 持有一个马里奥对象对象 方便修改状态
    private Mario mario;

    public MarioSmallStateImpl(Mario mario) {
        this.mario = mario;
    }

    @Override
    public void mushRoom() {
        log.info("小马里奥吃蘑菇变大了");
        //修改状态为大马里奥
        mario.setState(new MarioBigStateImpl(mario));
    }

    @Override
    public void fireFlower() {
        log.info("小马里奥吃火花，没有变化");
    }

    @Override
    public void enemyAttack() {
        log.info("小马里奥被攻击，死亡");
        mario.setState(new MarioDeadStateImpl(mario));
    }

    @Override
    public void fallIntoPit() {
        log.info("小马里奥掉入坑，死亡");
        mario.setState(new MarioDeadStateImpl(mario));
    }
}
